package com.hbpu.usercenter.config;


import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Swagger / Knife4j 配置类 - 支持 Token 认证
 */
@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        // 定义安全方案（即 Token 头部）
        SecurityScheme securityScheme = new SecurityScheme()
                .name("Authorization")
                .type(SecurityScheme.Type.HTTP)  // 类型：HTTP 认证
                .scheme("bearer")               // Bearer 模式
                .bearerFormat("JWT")            // Token 格式
                .in(SecurityScheme.In.HEADER)   // 放在 Header 中
                .description("请输入以 Bearer 开头的 Token，例如：Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");

        // 将安全方案加入 OpenAPI
        return new OpenAPI()
                .info(new Info()
                        .title("用户中心接口文档")
                        .description("接口文档（JWT Token 测试支持）")
                        .version("v1.0"))
                .components(new Components().addSecuritySchemes("BearerAuth", securityScheme))
                // 添加全局安全需求（默认所有接口都带上 Token）
                .addSecurityItem(new SecurityRequirement().addList("BearerAuth"));
    }
}
